import os
import glob
import random
import numpy as np
import pandas as pd
import tensorflow_addons as tfa
import tensorflow as tf
import tensorflow.experimental.numpy as tnp
from tensorflow import keras
from keras import layers
from keras.models import Sequential
from keras.layers import Conv2D,MaxPooling2D,Activation, Dropout, Flatten, Dense
from keras.preprocessing.image import ImageDataGenerator
from tqdm import tqdm
from PIL import Image
from tensorflow.keras.utils import to_categorical
import seaborn as sns
import matplotlib.image as img
import matplotlib.pyplot as plt
pip install tensorflow_addons
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: tensorflow_addons in /home/u188267/.local/lib/python3.9/site-packages (0.19.0) Requirement already satisfied: packaging in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from tensorflow_addons) (21.3) Requirement already satisfied: typeguard>=2.7 in /home/u188267/.local/lib/python3.9/site-packages (from tensorflow_addons) (3.0.1) Requirement already satisfied: importlib-metadata>=3.6 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from typeguard>=2.7->tensorflow_addons) (6.0.0) Requirement already satisfied: typing-extensions>=4.4.0 in /home/u188267/.local/lib/python3.9/site-packages (from typeguard>=2.7->tensorflow_addons) (4.5.0) Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from packaging->tensorflow_addons) (3.0.9) Requirement already satisfied: zipp>=0.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from importlib-metadata>=3.6->typeguard>=2.7->tensorflow_addons) (3.12.0) Note: you may need to restart the kernel to use updated packages.
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # set the logging level to ERROR
tf.random.set_seed(3)
from tensorflow.python.keras import backend as K
from tensorflow.keras.layers.experimental.preprocessing import Rescaling
import os
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '1'
os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1'
pip install importlib_metadata
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: importlib_metadata in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (6.0.0) Requirement already satisfied: zipp>=0.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from importlib_metadata) (3.12.0) Note: you may need to restart the kernel to use updated packages.
train_csv = pd.read_csv("./Training_set.csv")
test_csv = pd.read_csv("./Testing_set.csv")
train_csv.head()
| filename | label | |
|---|---|---|
| 0 | Image_1.jpg | sitting |
| 1 | Image_2.jpg | using_laptop |
| 2 | Image_3.jpg | hugging |
| 3 | Image_4.jpg | sleeping |
| 4 | Image_5.jpg | using_laptop |
train_fol = glob.glob("./train2/*")
test_fol = glob.glob("./test/*")
train_csv
| filename | label | |
|---|---|---|
| 0 | Image_1.jpg | sitting |
| 1 | Image_2.jpg | using_laptop |
| 2 | Image_3.jpg | hugging |
| 3 | Image_4.jpg | sleeping |
| 4 | Image_5.jpg | using_laptop |
| ... | ... | ... |
| 12595 | Image_12596.jpg | sitting |
| 12596 | Image_12597.jpg | clapping |
| 12597 | Image_12598.jpg | sitting |
| 12598 | Image_12599.jpg | dancing |
| 12599 | Image_12600.jpg | listening_to_music |
12600 rows × 2 columns
train_csv.label.value_counts()
sitting 840 using_laptop 840 hugging 840 sleeping 840 drinking 840 clapping 840 dancing 840 cycling 840 calling 840 laughing 840 eating 840 fighting 840 listening_to_music 840 running 840 texting 840 Name: label, dtype: int64
pip install plotly
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: plotly in /home/u188267/.local/lib/python3.9/site-packages (5.13.1) Requirement already satisfied: tenacity>=6.2.0 in /home/u188267/.local/lib/python3.9/site-packages (from plotly) (8.2.2) Note: you may need to restart the kernel to use updated packages.
pip install ipykernel
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: ipykernel in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (6.21.1) Requirement already satisfied: comm>=0.1.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (0.1.2) Requirement already satisfied: matplotlib-inline>=0.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (0.1.6) Requirement already satisfied: traitlets>=5.4.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (5.9.0) Requirement already satisfied: pyzmq>=17 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (25.0.0) Requirement already satisfied: jupyter-client>=6.1.12 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (8.0.2) Requirement already satisfied: psutil in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (5.9.4) Requirement already satisfied: nest-asyncio in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (1.5.6) Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (5.2.0) Requirement already satisfied: tornado>=6.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (6.2) Requirement already satisfied: debugpy>=1.6.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (1.6.6) Requirement already satisfied: packaging in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (21.3) Requirement already satisfied: ipython>=7.23.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipykernel) (8.9.0) Requirement already satisfied: pexpect>4.3 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (4.8.0) Requirement already satisfied: jedi>=0.16 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (0.18.2) Requirement already satisfied: pickleshare in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (0.7.5) Requirement already satisfied: backcall in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (0.2.0) Requirement already satisfied: pygments>=2.4.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (2.14.0) Requirement already satisfied: stack-data in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (0.6.2) Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.30 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (3.0.36) Requirement already satisfied: decorator in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel) (5.1.1) Requirement already satisfied: importlib-metadata>=4.8.3 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from jupyter-client>=6.1.12->ipykernel) (6.0.0) Requirement already satisfied: python-dateutil>=2.8.2 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from jupyter-client>=6.1.12->ipykernel) (2.8.2) Requirement already satisfied: platformdirs>=2.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel) (2.6.2) Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from packaging->ipykernel) (3.0.9) Requirement already satisfied: zipp>=0.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from importlib-metadata>=4.8.3->jupyter-client>=6.1.12->ipykernel) (3.12.0) Requirement already satisfied: parso<0.9.0,>=0.8.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from jedi>=0.16->ipython>=7.23.1->ipykernel) (0.8.3) Requirement already satisfied: ptyprocess>=0.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from pexpect>4.3->ipython>=7.23.1->ipykernel) (0.7.0) Requirement already satisfied: wcwidth in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from prompt-toolkit<3.1.0,>=3.0.30->ipython>=7.23.1->ipykernel) (0.2.6) Requirement already satisfied: six>=1.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel) (1.16.0) Requirement already satisfied: executing>=1.2.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel) (1.2.0) Requirement already satisfied: asttokens>=2.1.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel) (2.2.1) Requirement already satisfied: pure-eval in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel) (0.2.2) Note: you may need to restart the kernel to use updated packages.
pip install --upgrade nbformat
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: nbformat in /home/u188267/.local/lib/python3.9/site-packages (5.7.3) Requirement already satisfied: traitlets>=5.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from nbformat) (5.9.0) Requirement already satisfied: jsonschema>=2.6 in /home/u188267/.local/lib/python3.9/site-packages (from nbformat) (4.17.3) Requirement already satisfied: fastjsonschema in /home/u188267/.local/lib/python3.9/site-packages (from nbformat) (2.16.3) Requirement already satisfied: jupyter-core in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from nbformat) (5.2.0) Requirement already satisfied: attrs>=17.4.0 in /home/u188267/.local/lib/python3.9/site-packages (from jsonschema>=2.6->nbformat) (22.2.0) Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /home/u188267/.local/lib/python3.9/site-packages (from jsonschema>=2.6->nbformat) (0.19.3) Requirement already satisfied: platformdirs>=2.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from jupyter-core->nbformat) (2.6.2) Note: you may need to restart the kernel to use updated packages.
import plotly.express as px
l = train_csv.label.value_counts()
fig = px.pie(train_csv, values=l.values, names=l.index, title='Distribution of Human Activity')
fig.show()
plt.show()
filename = train_csv['filename']
situation = train_csv['label']
filename
0 Image_1.jpg
1 Image_2.jpg
2 Image_3.jpg
3 Image_4.jpg
4 Image_5.jpg
...
12595 Image_12596.jpg
12596 Image_12597.jpg
12597 Image_12598.jpg
12598 Image_12599.jpg
12599 Image_12600.jpg
Name: filename, Length: 12600, dtype: object
situation[105]
'drinking'
pip install matplotlib
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: matplotlib in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (3.6.3) Requirement already satisfied: packaging>=20.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (21.3) Requirement already satisfied: kiwisolver>=1.0.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (1.4.2) Requirement already satisfied: pillow>=6.2.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (9.4.0) Requirement already satisfied: pyparsing>=2.2.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (3.0.9) Requirement already satisfied: python-dateutil>=2.7 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (2.8.2) Requirement already satisfied: numpy>=1.19 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (1.22.3) Requirement already satisfied: fonttools>=4.22.0 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (4.38.0) Requirement already satisfied: contourpy>=1.0.1 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (1.0.7) Requirement already satisfied: cycler>=0.10 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from matplotlib) (0.11.0) Requirement already satisfied: six>=1.5 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0) Note: you may need to restart the kernel to use updated packages.
pip install opencv-python
Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: opencv-python in /home/u188267/.local/lib/python3.9/site-packages (4.7.0.72) Requirement already satisfied: numpy>=1.19.3 in /glob/development-tools/versions/oneapi/2023.0.1/oneapi/intelpython/python3.9/lib/python3.9/site-packages (from opencv-python) (1.22.3) Note: you may need to restart the kernel to use updated packages.
import cv2
from matplotlib import pyplot as plt
def disp():
num = random.randint(1,10000)
imgg = "Image_{}.jpg".format(num)
print(imgg)
train = "./"
if os.path.exists(train+imgg):
testImage = cv2.imread(train+imgg)
plt.imshow(testImage)
plt.title("{}".format(train_csv.loc[train_csv['filename'] == "{}".format(imgg), 'label'].item()))
else:
#print(train+img)
print("File Path not found \nSkipping the file!!")
disp()
Image_6242.jpg
cd train2
/home/u188267/hackathon/train2
cd ..
/home/u188267/hackathon
from PIL import Image
img_data = []
img_label = []
length = len(train_fol)
temp=Image.open
for i in (range(len(train_fol)-1)):
t = './train2/' + filename[i]
temp_img = Image.open(t)
img_data.append(np.asarray(temp_img.resize((160,160))))
img_label.append(situation[i])
inp_shape = (160, 160,3)
iii = img_data
iii = np.asarray(iii)
type(iii)
numpy.ndarray
y_train = to_categorical(np.asarray(train_csv['label'].factorize()[0]))
print(y_train[0])
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
vgg_model = Sequential()
pretrained_model= tf.keras.applications.VGG16(include_top=False,
input_shape=(160,160,3),
pooling='avg',classes=15,
weights='imagenet')
for layer in pretrained_model.layers:
layer.trainable=False
vgg_model.add(pretrained_model)
vgg_model.add(Flatten())
vgg_model.add(Dense(512, activation='relu'))
vgg_model.add(Dense(15, activation='softmax'))
2023-03-17 01:09:15.648952: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags. 2023-03-17 01:09:15.649728: I tensorflow/core/common_runtime/process_util.cc:146] Creating new thread pool with default inter op setting:
vgg_model.compile(optimizer='adam', loss='categorical_crossentropy',metrics=['accuracy'])
vgg_model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
vgg16 (Functional) (None, 512) 14714688
flatten (Flatten) (None, 512) 0
dense (Dense) (None, 512) 262656
dense_1 (Dense) (None, 15) 7695
=================================================================
Total params: 14,985,039
Trainable params: 270,351
Non-trainable params: 14,714,688
_________________________________________________________________
history = vgg_model.fit(iii,y_train, epochs=12)
Epoch 1/12 394/394 [==============================] - 253s 639ms/step - loss: 2.1592 - accuracy: 0.4480 Epoch 2/12 394/394 [==============================] - 252s 640ms/step - loss: 1.2191 - accuracy: 0.6013 Epoch 3/12 394/394 [==============================] - 250s 634ms/step - loss: 0.9410 - accuracy: 0.6902 Epoch 4/12 394/394 [==============================] - 251s 636ms/step - loss: 0.7407 - accuracy: 0.7562 Epoch 5/12 394/394 [==============================] - 249s 631ms/step - loss: 0.5621 - accuracy: 0.8150 Epoch 6/12 394/394 [==============================] - 252s 638ms/step - loss: 0.4096 - accuracy: 0.8648 Epoch 7/12 394/394 [==============================] - 250s 635ms/step - loss: 0.3004 - accuracy: 0.9030 Epoch 8/12 394/394 [==============================] - 250s 634ms/step - loss: 0.2127 - accuracy: 0.9306 Epoch 9/12 394/394 [==============================] - 250s 634ms/step - loss: 0.1808 - accuracy: 0.9413 Epoch 10/12 394/394 [==============================] - 251s 638ms/step - loss: 0.1848 - accuracy: 0.9374 Epoch 11/12 394/394 [==============================] - 251s 636ms/step - loss: 0.1443 - accuracy: 0.9527 Epoch 12/12 394/394 [==============================] - 250s 634ms/step - loss: 0.1082 - accuracy: 0.9656
vgg_model.save_weights("model.h5")
losss = history.history['loss']
plt.plot(losss)
[<matplotlib.lines.Line2D at 0x7f72ef3d71c0>]
accu = history.history['accuracy']
plt.plot(accu)
[<matplotlib.lines.Line2D at 0x7f72ef33fca0>]
def read_image(fn):
image = Image.open(fn)
return np.asarray(image.resize((160,160)))
thisdict = {
0: "Drinking",
11: "Fighting",
4: "Using Mobile",
13:"Walking",
1:"Using Laptop",
6:"Dancing",
14:"Texting"
}
def test_predict(test_image):
result = vgg_model.predict(np.asarray([read_image(test_image)]))
itemindex = np.where(result==np.max(result))
prediction = itemindex[1][0]
print("probability: "+str(np.max(result)*100) + "%\nPredicted class : ", prediction)
if(prediction in [0,11,4,13,1,6,14]):
action=thisdict[prediction]
else:
action=""
print("Action: ",action)
image = img.imread(test_image)
plt.imshow(image)
plt.title(prediction)
cd ..
/home/u188267
cd hackathon
/home/u188267/hackathon
cd ..
/home/u188267/hackathon
test_predict('./Image_108.jpg')
1/1 [==============================] - 0s 426ms/step probability: 99.96391534805298% Predicted class : 6 Action: Dancing
test_predict('./w1.jpg')
1/1 [==============================] - 0s 50ms/step probability: 99.99998807907104% Predicted class : 13 Action: Walking
test_predict('./l.jpg')
1/1 [==============================] - 0s 48ms/step probability: 99.90909099578857% Predicted class : 1 Action: Using Laptop
test_predict('./Two_dancers.jpg')
1/1 [==============================] - 0s 58ms/step probability: 99.98248219490051% Predicted class : 6 Action: Dancing
test_predict('./1.jpg')
1/1 [==============================] - 0s 55ms/step probability: 49.47127103805542% Predicted class : 0 Action: Drinking
test_predict('./2.jpg')
1/1 [==============================] - 0s 51ms/step probability: 38.698768615722656% Predicted class : 1 Action: Using Laptop
test_predict('./3.jpg')
1/1 [==============================] - 0s 52ms/step probability: 77.91008353233337% Predicted class : 14 Action: Texting
test_predict('./tt.jpg')
1/1 [==============================] - 0s 59ms/step probability: 62.337279319763184% Predicted class : 4 Action: Using Mobile
from sklearn.linear_model import LogisticRegression
import pickle
DT_pkl_filename = './model.pkl'
DT_Model_pkl = open(DT_pkl_filename, 'wb')
pickle.dump(LogisticRegression, DT_Model_pkl)
Intel(R) Extension for Scikit-learn* enabled (https://github.com/intel/scikit-learn-intelex)